论文整理Asynchronous Methods for Deep Reinforcement Learning ICML 2016.https://arxiv.org/pdf/1602.01783.pdfVolodymyr Mnih, Adrià Puigdomènech Badia, Mehdi Mirza, Alex Graves, Timothy P. Lillicrap, Tim Harley, David Silver, Koray Kavukcuoglu简述:这篇是RL领域最为经典的并行工作。作者通过多线程的方式来实现并行:每个线程有一份独立的policy参数以及一个游戏环境,这个policy会和环境交互产生数据来计算梯度。在跑每个episode之前,这个policy都会从parameter server上拉取最新的模型参数,然后在跑完每个episode之后计算梯度后把梯度刷到parameter server上。在当时看来,这个算法不仅能极大提升训练速度,而且效果也比当时的单机DQN版本好很多。作者提到说是由于每个线程的policy探索了不同的状态空间而提升了算法效果。A2C ---- OpenAIhttps://openai.com/blog/baselines-acktr-a2c/简述:A3C发布之后,OpenAI跟进发表了A2C,主要的工作是把异步版本的A3C改造成A2C。并行计算到底采用同步还是异步的方式是一个存在争议的问题,两者并没有谁比谁绝对地好。但是近些年,并行计算这块在学术界更多研究的是同步计算,因为同步计算的逻辑更加清晰,可复现性有保障(参考Facebook18年发的1小时训练一个image net)。这个工作虽然只是在OpenAI的博客上面发表,没有正式投稿到会议中去,但是已经成为了A3C最为常用的一个分支。GA3C: GPU-based A3C for Deep Reinforcement Learning NIPS 2016.https://www.researchgate.net/publication/310610848_GA3C_GPU-based_A3C_for_Deep_Reinforcement_LearningIuri Frosio, Stephen Tyree Jason Clemons Jan Kautz简述:A3C发布之后的另一个重要分支。原版的A3C是主打CPU这种低成本的计算方式的,但是在单个GPU上是不是就没法做并行了呢?不是的,作者通过单GPU + 多CPU的方式实现了并行,效果和原版的持平。Distributed Prioritized Experience Replay ICLR 2018.https://openreview.net/pdf?id=H1Dy---0ZDan Horgan, John Quan, David Budden, Gabriel Barth-Maron, Matteo Hessel, Hado van Hasselt, David Silver简述:上面提到的A3C算法是Actor-Critic的算法并行,这边文章介绍的是在DQN这类Critic-only的算法上面做的并行工作。Critic-only算法的主要特点是通过一个Experience Replay Memory来持续收集数据以提升算法的稳定性(DQN里面提到的重要trick),这里作者是直接多个启动actor和环境做交互,产生的数据放在一个全局共享的Memory中去。为了提升效率,作者也采用了带优先级的memory。IMPALA: Scalable Distributed Deep-RL with Importance Weighted Actor-Learner Architectures ICML 2018.https://arxiv.org/abs/1802.01561Lasse Espeholt, Hubert Soyer, Remi Munos, Karen Simonyan, Volodymir Mnih, Tom Ward, Yotam Doron, Vlad Firoiu, Tim Harley, Iain Dunning, Shane Legg, Koray Kavukcuoglu简述:这是并行RL算法领域引用最为高的一篇文章。文章和以往做的工作不同,不仅仅有工程上实验效果的大幅提升,还做了理论的分析解决了on-policy与off-policy的训练差异问题,整体工作是相当solid的。作者同时启动了多个Actor和一个Learner,每个Actor都是包含整个policy参数的,负责和环境交互产生数据,Learner是负责训练参数还有同步参数给Actor的。这就有个问题了,参数同步会有无法避免的延迟,那这个就违背了On-policy算法的更新原则,作者提出了一种很好的方式解决这个问题,对有延迟的数据进行修正使得on-policy的训练方式可以继续进行。Distributed Distributional Deterministic Policy Gradients ICLR 2018.https://arxiv.org/pdf/1804.08617.pdfGabriel Barth-Maron, Matthew W. Hoffman, David Budden, Will Dabney, Dan Horgan, Dhruva TB, Alistair Muldal, Nicolas Heess, Timothy Lillicrap简述:前面提到的文章主要是解决离散问题的并行加速,这篇文章是把DDPG改成并行版本的。在DDPG的基础上,作者把Critic里面的建模从一个均值的预估改成了对分布的预估(参考了distributional RL),不同的worker之间share同一个replay buffer,另外在更新的时候也是采用了N-step 的bootstrap方式(原DDPG是单步的bootstrap 更新方式)。Emergence of Locomotion Behaviours in Rich Environments arXiv.https://arxiv.org/abs/1707.02286Nicolas Heess, Dhruva TB, Srinivasan Sriram, Jay Lemmon, Josh Merel, Greg Wayne, Yuval Tassa, Tom Erez, Ziyu Wang, S. M. Ali Eslami, Martin Riedmiller, David Silver简述:介绍完DDPG的并行版本之后,我们来看下PPO的并行版本。首先建议大家看下这个视频,deepmind基于mujoco开发了一些有趣的挑战,看着视觉效果还是挺好的。这篇文章说实话改进不大,文章是采用同步的方式更新参数的(作者提到调研了异步,但是效果不好),然后PPO里面的Advantage计算则改成了N-step的计算,这一个和上一篇文章D4PG类似,另外就没有太多改进了。作者还指出通过并行计算,即便是很简单的reward设定方式也能让agent学习到很复杂的决策方式。GPU-Accelerated Robotic Simulation for Distributed Reinforcement Learning CoRL 2018.https://arxiv.org/abs/1810.05762Jacky Liang, Viktor Makoviychuk, Ankur Handa, Nuttapong Chentanez, Miles Macklin, Dieter Fox简述:英伟达在CoRL2018上发的一篇很有意思的文章。大家都想着用网络通讯增加worker数量的方法来提升整个并行框架的计算速度,Nvidia这时候跑出来呼吁大家直接用GPU做仿真就好,速度更快。论文里面是实现了mujoco版本的一些仿真器,有上万个仿真人同时在视频里面跑,看着是想当好玩的,强烈建议大家去看下这个视频。不过这个文章也是Nvidia用于秀GPU发的,代码并没有开源,仿真环境也没有开源,看看热闹就好。Recurrent Experience Replay in Distributed Reinforcement Learning ICLR 2019.https://openreview.net/pdf?id=r1lyTjAqYXSteven Kapturowski, Georg Ostrovski, John Quan, Remi Munos, Will Dabney简述:截止到目前(2019/08/19)在Atari游戏上的STOA效果,相对之前的IMPALA等并行工作提升幅度很大,无论是收敛速度还是最终效果(从图就可以看出来)。简单来说,这个工作就是Apex的RNN版本(Reviewer原话),两者都是有一个共享的RPM来收集不同worker的数据,然后通过off-policy算法来更新参数,不同的是这个文章是通过RNN来建模的。遗憾的是这个文章并没有开源代码,本来RNN的具体实现就有挺多trick,而且是RNN+并行这种实现结构,没有开源的话挺难让别人来follow他们的工作。最后是一个表格的总结,具体的论文:https://github.com/PaddlePaddle/PARL/blob/develop/papers/archive.md#distributed-training本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。